<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // 短路运算:

        // 且运算:第一个条件满足(无法下定论),要看后面的动作决定
        // true && alert("看我出不出来！！");
        // 且运算:第一个条件false则无需再看后面的条件了
        // false && alert("看我出不出来！！");



        // 或运算:第一个条件为真则可以下定论整体为true(不会执行后面的程序)
        // true || alert("看我出不出来！！");
        // 或运算:第一个条件为false则继续往下执行直到true或者最后一位条件
        // false || alert("看我出不出来！！");


        // 非运算! (显示把变量转换为布尔类型)
        var a = 10  //将10赋值给a
        // a = !a;  //a直接转换成布尔类型true,true的反面是false,!true===>false
        console.log(a);  //false

        // 总结:
        // 且运算:遇到true则继续向后计算,直到false或者最后一位再返回
        // 或运算: 遇到true就直接返回



        // 非布尔值进行逻辑运算

        // 且运算

        var result = 5 && 6;  //true&&true  整体结果由第二个条件决定,所以返回第二个条件
        console.log(result);  //6


        var age = 24
        var flag = age >= 18 && age <= 60;  //24>=18 && 24<=60 (结构由第二个条件决定,就返回第二个条件24<=60)
        console.log(age);


        // 或运算
        var result2 = 5 || 6;   //如果第一个为真,整体就是真,相当于整体结果是由第一个条件决定的,返回第一个条件

        console.log(result2);  


        // 总结:
        // 与运算: 如果第一个值为true,则必然返回第二个值(如果所有的值都为true,则返回的是最后一个值)

        // 如果第一个值为false,则直接返回第一个值


        // 或运算

        // 如果第一个值为true,则直接返回第一个值
        // 如果第一个值为false,则返回第二个值
    </script>
</body>

</html>